#include "outline/bspline_opt_impl.h"

namespace outline {

#define INSTANTIATE(T,R) template bspline_opt<T, R>;

INSTANTIATE(unsigned short, float)
INSTANTIATE(unsigned short, double)
INSTANTIATE(short, float)
INSTANTIATE(int, float)
INSTANTIATE(float, float)
INSTANTIATE(double, double)

#define INSTANTIATE_M(S, B) \
	template bspline_opt_base<float>::S<bspline_opt_base<float>::B>;

INSTANTIATE_M(sep_center, fixed_center)
INSTANTIATE_M(sep_center, mobile_center)
INSTANTIATE_M(sep_tangent, arbitrary_tangent)
INSTANTIATE_M(sep_tangent, zero_tangent)
INSTANTIATE_M(sep_tangent, fixed_tangent)

template bspline_opt_base<float>::gspline< g2::translationf >;
template bspline_opt_base<float>::gspline< g2::rigidf >;
template bspline_opt_base<float>::gspline< g2::rigid_scalef >;
template bspline_opt_base<float>::gspline< g2::affinef >;

} //namespace outline
